<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        // 数组是将多个数据存储在一个变量中的方式
        // 数组的创建有两种方式：
        // 1.用new关键字来创建:
        var arr = new Array();
        // 2.用字面量的方式进行创建:
        var arr1 = [];
        var arr2 = ['a', 'b', 'c', 'd'];
        // 数组里面可以储存所有类型的数据:
        var arr3 = [1, 2, 'xiaoya', true];
        // 多个数据用逗号隔开
        console.log(arr2);
        console.log(arr3);
        var arr4 = ['aaa', 'gulinaza', 'woshixiaoyao']
        console.log(arr4[0]);
        console.log(arr4[1]);
        console.log(arr4[2]);
        console.log(arr4[3]);
        // 可以通过索引下标的方式获取访问数组元素，如果数组中没有则undefined
        // 数组下标从0开始
        // 遍历数组元素是通过循环的方式
        for (var i = 0; i < 3; i++) {
            console.log(arr4[i]);
        }

        var arr5 = ['关羽', '赵云', '张飞', '马超', '黄忠'];
        // 数组的长度可以通过 数组名.length来获取，它是动态的获得数组长度
        // 数组长度是元素的个数
        // 遍历：数组元素从头到尾访问一次.


        for (var j = 0; j < arr5.length; j++) {
            console.log(arr5[j]);
        }

        var a = [2, 6, 1, 7, 4];
        var sum = 0, b = 0;
        for (var c = 0; c < a.length; c++) {
            sum = sum + a[c];
        }
        b = sum / a.length;
        console.log(sum, b);
        // 计算数组中所有元素的和及平均值


        var z = [2, 6, 1, 66, 63, 65, 68, 100];
        var max = z[0];
        for (x = 0; x < z.length; x++) {
            if (z[x] > max) {
                max = z[x];
            }
        }
        console.log('数组最大值是' + max);
        // 求数组中的最大值

        var str = ''
        for (var m = 0; m < arr5.length; m++) {
            str = str + arr5[m] + '|';
        }
        console.log(str);
        // 数组转换为字符串

        // 可以通过直接修改数组长度length或者 数组索引的方式修改数组元素
        // 如果修改后长度大于原来的数组则多出的元素是undefined
        a[6] = 'yuxiaoyao';
        console.log(a[5]);
        console.log(a);
        // 这里测试了以下跳过一个索引向后面直接赋值会发现数组长度也增加了，并且中间增加了一个undefined的数据

        // 注意不要直接给数组名字赋值，否则数组数据会消失，这是js的坑，因为js数据类型是动态的

        var arr9 = [];
        var w = 1;
        for (w = 0; w < 10; w++) {
            arr9[w] = w + 1;
        }
        console.log(arr9);
        // 在一个数组中依次存入1-10

        var jishu = 0
        var newarr = [];
        var saixuan = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
        for (var num = 0; num < saixuan.length; num++) {
            if (saixuan[num] > 10) {
                newarr[jishu] = saixuan[num];
                jishu++;
            }
        }
        console.log(newarr);
        // 将数组中大于10 的数据取出放进一个新的数组
        // 没用方法前一个简单的做法是用一个计数器来控制新数组下标的变化



        var newarr = [];
        var saixuan = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
        for (var num = 0; num < saixuan.length; num++) {
            if (saixuan[num] > 10) {
                newarr[newarr.length] = saixuan[num];
            }
        }
        console.log(newarr);
        // 将数组中大于10 的数据取出放进一个新的数组
        // 这种相比于第一种方法更加优雅，直接利用新数组长度的变化来相应的添加数据






        var newarr = [];
        var saixuan = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
        for (var num = 0; num < saixuan.length; num++) {
            if (saixuan[num] > 10) {
                newarr.push(saixuan[num]);
            }
        }
        console.log(newarr);
        // 这是采用在数组末尾直接插入新的值的办法


        var newarr = [];
        var saixuan = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
        for (var num = 0; num < saixuan.length; num++) {
            if (saixuan[num] != 0) {
                newarr[newarr.length] = saixuan[num];
            }
        }
        console.log(newarr);
        // 删除数组中所有是0的元素


        var newarr = [];
        var color = ['red', 'green', 'yellow', 'blue', 'pink'];
        for (i = color.length - 1; i >= 0; i--) {
            newarr[newarr.length] = color[i];
        }
        console.log(newarr);
        // 把数组反转

    </script>
</head>

<body>

</body>

</html>